Turbo Freezer und Breakpoints

← Zurück zum Forum

Ich bin nicht ganz sicher, ob das hier richtig ist oder eher unter Software gehört.

Ich habe für die Lösung eines Problems, dass nur auf echter Hardware, aber nicht am Emulator auftritt (https://forums.atariage.com/topic/390290-hsc23-round-8-shamus-as-in-the-hsc-version-of-the-game/page/2/), den TurboFreezer ausgepackt und dann festgestellt, dass er zwar toll funktioniert, aber der Debugger keine Breakpoints kann. Daher meine Frage, ob das technisch möglich wäre und nur nicht implementiert ist, oder ob das andere Hardware erfordern würde.

AntwortZitat

Hi,

ja, habe ich auch vermißt und so gelöst. Ich habe an benötigter Stelle ein JMP auf sich selbst eingetragen und anschließend wieder die 3 vorhandenen Bytes eingefügt.

LG aka

AntwortZitat

Das ist leider Prinzip bedingt nicht so trivial. Der 6502 unterstützt nur Soft-BP über den BRK Befehl. Du musst also den Befehl, wo der Debugger "zuschlagen" soll, mit BRK überschreiben, und dann, wenn der BP ausgelöst wurde, den originalen Wert zurück schreiben. Aber: BRK löst nur nen Interrupt aus, der im "echten" Addresspace behandelt werden muss. Der Freezer müßte also, wenn Du 'nen BP gesetzt hast, den Interrupt-Vektor auf seine eigene Routine umleiten. Das ist schwierigen als man denkt, weil die richtig gemeinen Sachen natürlich das OS deaktivieren oder eine eigene Routine installieren (oder NMI deaktivieren). Funktioniert also nicht immer. Einen "echten HW-Interrupt" könnt man vielleicht implementieren, der triggert, wenn die Adresse des Befehls auf dem Addressbus liegt. Das ist auch schwieriger als man denkt, WEIL der 6502 bei single opcode Instruktionen auch die nächste Adresse liest (und zwar sogar 2 mal). K.A. ob mal das trivial erkennen kann.

AntwortZitat

Das mit den "Soft"-Breakpoints durch BRK ist mir klar, funktioniert aber nicht, wenn man z.B. Zugriffe auf Hardware-Register "erwischen" will. Meine Überlegung war, dass der Freezer ja ständig alles auch ins RAM schreibt und bei Zugriffen auf eine Adresse aus der Breakpoint-Tabelle in den Freezer-Modus schalten könnte. Das ginge wohl aber nur, wenn der Freezer selbst überhaupt irgendeine Software hat, die bei inaktivem Freezer läuft. Wenn das alles nur Schaltungen ohne Programm sind, kann es vermutlich nicht funktionieren.

AntwortZitat

Der Freezer kann das leider nicht. Wenn Du aus dem Freezer rausgehst ist er wieder komplett "unsichtbar" und erst ein erneuter Druck auf den Freezer-Button aktiviert ihn wieder.

Um "Hardware Breakpoints" umzusetzen bräuchte es zusätzliche Hardware und mit ein wenig Bastelei im Atari und am Freezer könnte es dann auch mit dem Freezer klappen:

Wenn die Zusatz-Hardware einen Zugriff auf die gewünschte Adresse feststellt müsste sie zuerst den Freezer-Button drücken (Signal auf low ziehen) und dann ein paar Zyklen später einen NMI generieren (Kabel an ANTIC. Dann muss sie den Button noch einige (mindestens 10 oder so) Zyklen lang gedrückt halten und dann wieder freigeben.

Mit ein paar Zyklen Verzögerung nach dem Zugriff sollte dann der Freezer aktiv sein (Zugriff auf IRQ/NMI/Reset Vektoren plus gedrückter Freezer Button aktiviert ihn).

so long,

Hias

AntwortZitat

für genau sowas hatte ich früher mal die große Debug-PCB entwickelt! Sie hat gleich 2 Register: einmal eine einstellbare Debug-Anzeige mit 6 7Segment-Anzeigen und das gleiche nochmal aber für einen Trigger-Impuls. ein LS123 zum verlängern des "Freezer-Button-Signal" ist auch bereits drauf! Ausserdem ist ein 32K EEPROM und Ein Flash/SRAM drauf, um z.b. OSse oder sonstwas einblenden zu können. Im VHDL sind aber noch kleine Bugs drin, die ich nicht fixen kann.

@HIAS: do you remember? 😉 20260528_234113.jpg Es gab auch mal einen Artikel -wohl im alten Forum, 2015 - davon. Ich finde ihn jedoch gerade nicht.

Was aber auch interessant damit ist: Man kann auf eine Adresse "lauschen" und wenn auf diese zugegriffen wird, wird das RAM an dieser Stelle ausgeblendet und ein vorher eingestellter Wert per Hardware eingblendet! Ideal um Leben.Zähler festzusetzen 🙂

Anhänge:

keine PN's mehr! Bitte per email kontaktieren! atari1450xld©mega-hz.de

AntwortZitat

mega-hz schrieb: @HIAS: do you remember? ;-)

Ja, ich erinnere mich, kann mich aber nicht dran erinnern ob Du das mit der Freezer-Integration hinbekommen hattest.

Da ist das Timing wichtig, wie geschrieben zuerst Button drücken, dann NMI auslösen und dann nach einiger Zeit Button loslassen.

Wenn Du den NMI zu früh auslöst (trigger direkt an ANTIC) geht der Button-Press ins Leere.

so long,

Hias

AntwortZitat

richtig ausprobiert konnte ich das nicht. NMI hatte ich auch nicht auf dem Schirm, da es noch andere Probleme gab. Ein ganz blödes war die versehentliche invertierung vom REF Signal... Hat Jahre gedauert, bis ich das mal endeckt hatte. Danach funktionierte auch das einblenden von OS-ROMs usw. ohne große Probleme. Das was für die ganzen Möglichkeiten der PCB noch richtig cool wäre, wäre ein Menü in dem man alles sofort einstellen kann, welches aber sich wie der Freezer verhält. Also mittendrin ins Menü, alles vom laufenden Programm wird eingefroren/gesichert und nach dem Verlassen des Menüs gehts normal weiter. DAS wäre das ultmativeste Debug-Tool !

Für mich alleine ist das zuviel VHDL und Software... 😞

keine PN's mehr! Bitte per email kontaktieren! atari1450xld©mega-hz.de

AntwortZitat

mega-hz schrieb: Für mich alleine ist das zuviel VHDL und Software... 😞

Das ist ja genau die Frage die ich mir schon lange stelle: Lohnt sich ein FPGA/CPLD heute noch? Wäre es nicht einfacher und billiger, ein Raspberry Pi Pico Board anzuschliessen? Vorausgesetzt du hättest genügend freie I/Os, kann der Raspi dann die Signale samplen. Die SW auf dem Raspi wäre dann mMn deutlich flexibler in ihren Möglichkeiten. Gut, muss immer noch einer implementieren, aber die HW wäre eher eine "eierlegende Wollmilchsau".

AntwortZitat

mit dem PiPico hab ich es mal versucht, aber selbst mit seiner hohen Geschwindigkeit war das Timing mit dem Atari nicht präzise genug, um auch nur einen einfachen Adress-Decoder hinzubekommen. Die IOs sind auch zu wenige. Da ist das FPGA schon weitaus besser bzw. das einzig Wahre. Dank KI kann ich da aber inzwischen einiges mehr erreichen wie vor 12 Jahren... (Damals gab es kein ChatGPT oder Gemini, nur die einzig Wahre KI bzw. MI: HIAS ! 🙂 )

keine PN's mehr! Bitte per email kontaktieren! atari1450xld©mega-hz.de

AntwortZitat

Mit einem RP2350 geht das problemlos, aber die PIO-Programmierung ist etwas tricky und bestimmt nicht "Mainstream".

Beispiel dafür, das gerade in aller Munde ist: https://onerom.org/

Das FujiNet-Team verwendet das auch für die Systeme, bei denen ein Bus-Interface verwendet wird (z.B. IBM PC mit ISA, Tandy CoCo, MSX).

AntwortZitat

Wow! Das ist sehr interessant!

Ja von PIO Programmierung hab ich gehört, hab aber null Ahnung davon. Trotzdem würde der 2350 noch zu wenig IOs für die Debug-Platine haben... Selbst der Altera FPGA ist schon fast voll belegt. Da alleine der komplette Atari Bus schon um die 30+ IOs benötigt... (8xData,16xAdr, div. Signale Phi0,PHI2 uvm.)

keine PN's mehr! Bitte per email kontaktieren! atari1450xld©mega-hz.de

AntwortZitat

Mag ja sein, aber bevor ich nun noch etwas neues anfange, sollte VHDL erstmal sitzen. Und das tut es noch nicht. Noch lange nicht so gut wie Du es kannst! Vielleicht hast Du ja auch Lust darauf, das Teil mal fertig zu bringen? Ich und viele andere würden sich sicher freuen!

Die PCB würde ich sowieso nochmal überarbeiten, da mit ca. 180mm doch ganz schön hoch am PBI. Zumindest die Anzeigen (2x6 7Segment und 16 LEDs sowie 8 Schalter) würde ich heutzutage seperat machen. Dann könnte die Hauptplatine flach liegen und die Anzeigenplatine seperat.

Hardware und Software sind doch sehr unterschiedliche Dinge. Auch wenn VHDL eigentlich ja eine Hardware-Beschreibung ist, zähle ich das unter Software. Hardware ist für mich eher Schaltpläne und Layouts...

@HIAS: Ich könnte Dir - falls Du doch Interesse hast - eine Platine zuschicken!

Und für ein Freezer-like Menü um die Debug-PCB steuern zu können wäre PPS bestimmt der Richtige!

keine PN's mehr! Bitte per email kontaktieren! atari1450xld©mega-hz.de

AntwortZitat

immerhin haben wir ja schon so tolle Projekte geschafft wie THE!CART und die MEGA-SPEEDY, das mit dem Debug Tool wäre echt der Hit und Nr.3 !

keine PN's mehr! Bitte per email kontaktieren! atari1450xld©mega-hz.de

AntwortZitat